一、动态库的生成
1、先建立一个库文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/d4056fcb1ea347f687e8b9863cef2287.png)
2、修改类型为共享库,自定义项目名称以及项目路径
![在这里插入图片描述](https://img-blog.csdnimg.cn/7beca348562e40d29db399accde70c46.png)
3、选择编译器
![在这里插入图片描述](https://img-blog.csdnimg.cn/2a5077cbafc345a994f656cdd9becd0c.png)
4、选择动态库所需要的模块
![在这里插入图片描述](https://img-blog.csdnimg.cn/e5e9d1726b64448f98e1ec22594f4a5d.png)
5、自定义类名,点击下一步
![在这里插入图片描述](https://img-blog.csdnimg.cn/533d13fddcb54b04a08977282f8f1354.png)
6、再点击下一步
![在这里插入图片描述](https://img-blog.csdnimg.cn/2735d0323e804a159b8efae5b7d7d5d8.png)
7、项目总览
![在这里插入图片描述](https://img-blog.csdnimg.cn/3c7b3cfeb16b4d7a8118e8a5401ea806.png)
8、将testdynamiclib_global.h头文件中的内容拷贝到testdynamiclib.h头文件中
![在这里插入图片描述](https://img-blog.csdnimg.cn/7d867c5db342410a943b1be5096a2a26.png)
9、然后如下所示
![在这里插入图片描述](https://img-blog.csdnimg.cn/0772a8878f634725b7b8ab0a6dba801d.png)
10、在testdynamiclib.h头文件中定义加减乘除四个函数
![在这里插入图片描述](https://img-blog.csdnimg.cn/83d5de311d714460816b3af0f0d2b49c.png)
11、在testdynamiclib.cpp源文件中简单实现函数的功能
![在这里插入图片描述](https://img-blog.csdnimg.cn/ebcaa79b02b74f77b2cbd30a0ac12d2b.png)
12、项目右键,点击qmake编译运行
![在这里插入图片描述](https://img-blog.csdnimg.cn/d90cc7fb6be74aafa57863e9e9a36e29.png)
13、项目右键,点击重新构建
![在这里插入图片描述](https://img-blog.csdnimg.cn/7d0a626220634c9c977d39c2d25fa582.png)
14、构建成功
![在这里插入图片描述](https://img-blog.csdnimg.cn/eadaae6444c740189ee48536f4789144.png)
15、运行项目
![在这里插入图片描述](https://img-blog.csdnimg.cn/6803ca614ac149feb14ce225ac642ac2.png)
16、忽略此弹框,编译成功,生成dll、lib库文件
注意:生成的dll库文件是在build里的debug中,查看自己构建项目时所存储的位置。
二、动态库的调用
1、新建工程
![在这里插入图片描述](https://img-blog.csdnimg.cn/25d7bdec051c48e4ab495fda53909d02.png)
2、自定义项目名
![在这里插入图片描述](https://img-blog.csdnimg.cn/084b4ec512b242a8b1a76a0aea6fd6ce.png)
3、选择编译器
![在这里插入图片描述](https://img-blog.csdnimg.cn/6e51b002a8fd44b3b06350c9ec855d9f.png)
4、自定义类名(这里为了演示我就默认了)
![在这里插入图片描述](https://img-blog.csdnimg.cn/4b9eeef066a94c47ac30cf0c814cd13d.png)
5、直接点击完成
![在这里插入图片描述](https://img-blog.csdnimg.cn/b5faf26c26c84d2892f7d21f5710dd21.png)
6、点击完成后项目预览
![在这里插入图片描述](https://img-blog.csdnimg.cn/8296235d6daf41d0bfc9d49827e7a062.png)
7、然后请在建立动态库的地方查找,点击它:
注意:debug和release里面都有可能,看自己构建项目时的选择,默认都是debug的。
8、将.dll 和 .lib 复制到 libCall文件里
也将testdynamiclib里的testdynamiclib.h复制到libCall中 ![在这里插入图片描述](https://img-blog.csdnimg.cn/396a1ee0db4649409dd3244fe5ac8cae.png)
9、最终libCall的项目里:
![在这里插入图片描述](https://img-blog.csdnimg.cn/0abc0b26fb9a4fe7a416cc3ffaab3e33.png)
10、在main.cpp主函数里,添加testdynamiclib.h头文件,调用并打印函数结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/a9cd286d99c548dc9398bd0b23fce1fa.png)
11、将libCall中的dll、lib、h三个文件复制到该项目编译所在的位置
![在这里插入图片描述](https://img-blog.csdnimg.cn/dd839acbad9a4d7bbd8521c8293ee5f0.png)
12、libCall编译所在的位置如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/da97efa257764add829f3e0eb0a6729e.png)
13、复制到此处
![在这里插入图片描述](https://img-blog.csdnimg.cn/74858f5f74ba4de8962c1e0700f0627b.png)
14、右击项目,点击添加库
![在这里插入图片描述](https://img-blog.csdnimg.cn/eed22015cbe347739a8813261d886796.png)
15、选择外部库
![在这里插入图片描述](https://img-blog.csdnimg.cn/b7eea16da62d493083834cbe31de1475.png)
16、选择库文件的位置
![在这里插入图片描述](https://img-blog.csdnimg.cn/57762b6dc4f1475eb5f9ca5200c79179.png)
17、添加lib文件
![在这里插入图片描述](https://img-blog.csdnimg.cn/ab65b15a95254912bf0c9aa08347aea2.png)
18、点击下一步
![在这里插入图片描述](https://img-blog.csdnimg.cn/2cbb11a5d0f44561870e8715d64bb974.png)
19、完成
![在这里插入图片描述](https://img-blog.csdnimg.cn/23cddcc705b447a89136342f853896a7.png)
20、该部分为添加外部库时自动添加进来的(如果程序报错了,可将此处删除)
![在这里插入图片描述](https://img-blog.csdnimg.cn/732e29ecc50d4394b17489d31a7315da.png)
21、运行项目,得到对应的结果,动态库调用成功
注意:重新构建项目时,先清除,再执行qmake,然后重新构建,以防止之前的错误结果影响到现在。
|